Django অ্যাপ্লিকেশনটি প্রোডাকশন পরিবেশে চালানোর জন্য Apache অথবা Nginx ওয়েব সার্ভার ব্যবহার করা হয়। এই ওয়েব সার্ভারগুলি Django অ্যাপ্লিকেশনকে রিভার্স প্রোক্সি হিসেবে কাজ করার জন্য কনফিগার করা হয়, যা মিডলওয়ার বা সার্ভারের মধ্যে বিভিন্ন রিকোয়েস্ট হ্যান্ডলিং ও লোড ব্যালান্সিং ম্যানেজ করে।
এখানে, আমরা Apache এবং Nginx উভয়ের সাথে Django ডেপ্লয়মেন্ট সেটআপ করার জন্য প্রাথমিক স্টেপগুলি আলোচনা করব।
১. Apache এর সাথে Django ডেপ্লয়মেন্ট
Apache সাধারণত mod_wsgi এর মাধ্যমে Django অ্যাপ্লিকেশন চালাতে ব্যবহৃত হয়। mod_wsgi হল একটি Apache মডিউল যা Python অ্যাপ্লিকেশন চালানোর জন্য ব্যবহৃত হয়। Django অ্যাপ্লিকেশনকে Apache সার্ভারে ডেপ্লয় করতে আপনাকে কয়েকটি স্টেপ অনুসরণ করতে হবে।
১.১. Apache এবং mod_wsgi ইনস্টল করা
প্রথমে আপনাকে Apache এবং mod_wsgi ইনস্টল করতে হবে। Ubuntu-তে এটি ইনস্টল করতে কমান্ড ব্যবহার করুন:
sudo apt-get update
sudo apt-get install apache2
sudo apt-get install libapache2-mod-wsgi-py3
১.২. Django অ্যাপ্লিকেশন প্রস্তুত করা
আপনার Django প্রজেক্টটি অবশ্যই settings.py ফাইলে ALLOWED_HOSTS এবং STATIC_ROOT কনফিগার করা থাকতে হবে।
# settings.py
ALLOWED_HOSTS = ['your-domain.com', 'your-server-ip']
STATIC_ROOT = os.path.join(BASE_DIR, 'static/')
১.৩. Static ফাইলের জন্য collectstatic চালানো
Apache/Django সার্ভারে স্ট্যাটিক ফাইলগুলিকে যথাযথভাবে সার্ভ করার জন্য আপনাকে collectstatic কমান্ড চালাতে হবে।
python manage.py collectstatic
১.৪. Apache কনফিগারেশন সেটআপ
Apache কনফিগারেশন ফাইলে আপনার Django অ্যাপ্লিকেশন সার্ভ করার জন্য mod_wsgi ব্যবহার করতে হবে। একটি নতুন Apache কনফিগারেশন ফাইল তৈরি করুন।
sudo nano /etc/apache2/sites-available/django_project.conf
এটি নিম্নরূপ কনফিগার করুন:
<VirtualHost *:80>
ServerName your-domain.com
DocumentRoot /path/to/your/project
WSGIDaemonProcess django_project python-path=/path/to/your/project:/path/to/your/project/venv/lib/python3.x/site-packages
WSGIProcessGroup django_project
WSGIScriptAlias / /path/to/your/project/project_name/wsgi.py
Alias /static/ /path/to/your/project/static/
<Directory /path/to/your/project/static>
Require all granted
</Directory>
<Directory /path/to/your/project/project_name>
<Files wsgi.py>
Require all granted
</Files>
</Directory>
</VirtualHost>
এখানে:
WSGIScriptAlias: এটি Django এরwsgi.pyফাইলের পাথ নির্দেশ করে, যা Django অ্যাপ্লিকেশনকে Apache এর মাধ্যমে সার্ভ করতে সাহায্য করে।Alias /static/: স্ট্যাটিক ফাইলগুলি সার্ভ করার জন্য কনফিগার করা হয়েছে।
১.৫. Apache রিস্টার্ট করা
কনফিগারেশন ফাইলটি সেভ করার পর, Apache সার্ভারটি রিস্টার্ট করুন।
sudo a2ensite django_project.conf
sudo systemctl restart apache2
২. Nginx এর সাথে Django ডেপ্লয়মেন্ট
Nginx হল একটি হাই-পারফরম্যান্স ওয়েব সার্ভার যা সাধারণত রিভার্স প্রোক্সি হিসেবে ব্যবহৃত হয়। Django অ্যাপ্লিকেশন Nginx এর সাথে সার্ভ করতে আপনি uWSGI ব্যবহার করতে পারেন, যা Nginx এবং Django অ্যাপ্লিকেশন এর মধ্যে যোগাযোগ স্থাপন করে।
২.১. Nginx এবং uWSGI ইনস্টল করা
প্রথমে Nginx এবং uWSGI ইনস্টল করতে হবে।
sudo apt-get update
sudo apt-get install nginx
sudo apt-get install uwsgi
sudo apt-get install uwsgi-plugin-python3
২.২. Django অ্যাপ্লিকেশন প্রস্তুত করা
settings.py ফাইলে ALLOWED_HOSTS, STATIC_ROOT, এবং MEDIA_ROOT কনফিগার করুন।
# settings.py
ALLOWED_HOSTS = ['your-domain.com', 'your-server-ip']
STATIC_ROOT = os.path.join(BASE_DIR, 'static/')
MEDIA_ROOT = os.path.join(BASE_DIR, 'media/')
২.৩. uWSGI কনফিগারেশন
আপনার Django অ্যাপ্লিকেশনকে uWSGI ব্যবহার করে Nginx এর মাধ্যমে চালাতে হবে। প্রথমে uWSGI কনফিগারেশন ফাইল তৈরি করুন।
sudo nano /etc/uwsgi/apps-available/django_project.ini
এই কনফিগারেশন ফাইলে নিম্নরূপ লিখুন:
[uwsgi]
chdir = /path/to/your/project
module = project_name.wsgi:application
home = /path/to/your/project/venv
master = true
processes = 5
socket = /path/to/your/project/django_project.sock
chmod-socket = 666
vacuum = true
static-map = /static=/path/to/your/project/static
এখানে:
module: আপনার Django প্রজেক্টেরwsgi.pyফাইলের পাথ নির্দেশ করছে।socket: uWSGI এবং Nginx এর মধ্যে যোগাযোগের জন্য Unix socket ব্যবহার করা হচ্ছে।
২.৪. Nginx কনফিগারেশন
এখন, Nginx এর কনফিগারেশন ফাইল তৈরি করুন এবং সেটআপ করুন।
sudo nano /etc/nginx/sites-available/django_project
এটি নিম্নরূপ কনফিগার করুন:
server {
listen 80;
server_name your-domain.com;
location / {
uwsgi_pass unix:/path/to/your/project/django_project.sock;
include uwsgi_params;
}
location /static/ {
alias /path/to/your/project/static/;
}
location /media/ {
alias /path/to/your/project/media/;
}
}
এখানে:
uwsgi_pass: uWSGI এর সকেটের পাথ নির্দেশ করছে।alias: স্ট্যাটিক এবং মিডিয়া ফাইলের পাথ নির্দেশ করছে।
২.৫. Nginx এবং uWSGI রিস্টার্ট করা
এখন, Nginx এবং uWSGI সার্ভার রিস্টার্ট করুন।
sudo ln -s /etc/nginx/sites-available/django_project /etc/nginx/sites-enabled
sudo systemctl restart nginx
sudo systemctl start uwsgi
সারাংশ
- Apache এর সাথে Django ডেপ্লয়মেন্টে mod_wsgi ব্যবহার করা হয়। এটি Django অ্যাপ্লিকেশনকে Apache সার্ভারে রান করার জন্য একটি অ্যাড-অন মডিউল।
- Nginx এর সাথে Django ডেপ্লয়মেন্টে uWSGI ব্যবহৃত হয়, যা Nginx এবং Django অ্যাপ্লিকেশন এর মধ্যে একটি ব্রিজ হিসেবে কাজ করে।
- Apache এবং Nginx উভয়ই জনপ্রিয় ওয়েব সার্ভার এবং তারা Django অ্যাপ্লিকেশন সার্ভ করার জন্য উন্নত পারফরম্যান্স প্রদান করে, বিশেষ করে প্রোডাকশন পরিবেশে।
Read more